package englishChicken;

import java.util.List;
import java.util.LinkedList;
import java.util.Iterator;
import data.JDBCJuegoDAO;

public class AlmacenDeJuegos {

	private static AlmacenDeJuegos aj;
	private static JDBCJuegoDAO jdbcJuegos;
	
	public static synchronized AlmacenDeJuegos getInstance(){
		if(aj==null){
			aj=new AlmacenDeJuegos();
			jdbcJuegos=new JDBCJuegoDAO();
		}
		return aj;
	}
	
	private AlmacenDeJuegos(){
	}
	
	public List<Juego> getJuegos() {
		List<Juego> juegos=jdbcJuegos.selectAll();
		Iterator<Juego> jIT=juegos.iterator();
		List<Juego> peticion=new LinkedList<Juego>();
		while(jIT.hasNext()){
			Juego jAct=jIT.next();
			peticion.add(jAct);
		}
		return peticion;
	}
	
	public List<Juego> getJuegosMasJugados(int pagina){
		return jdbcJuegos.selectMasJugados(pagina);
	}
	
	public List<Juego> getJuegosMasNuevos(int pagina){
		return jdbcJuegos.selectMasNuevos(pagina);
	}
	
	public List<Juego> getJuegos(String comienzo){
		List<Juego> juegos=jdbcJuegos.selectStartWith(comienzo);
		Iterator<Juego> jIT=juegos.iterator();
		List<Juego> peticion=new LinkedList<Juego>();
		while(jIT.hasNext()){
			Juego jAct=jIT.next();
			peticion.add(jAct);
		}
		return peticion;
	}

	public Juego getJuego(String nombre) {
		String caracteresEspeciales=
			"Ã¡:&aacute;,"+
			"Ã©:&eacute;,"+
			"Ã­:&iacute;,"+
			"Ã³:&oacute;,"+
			"Ãº:&uacute;,"+
			"Ã±:&ntilde;,"+
			"Ã:&Aacute;,"+
			"Ã:&Eacute;,"+
			"Ã:&Iacute;,"+
			"Ã:&Oacute;,"+
			"Ã:&Uacute;,"+
			"Ã:&Ntilde";
		String cEspArray[]=caracteresEspeciales.split(",");
		for(int i=0;i<cEspArray.length;i++)
			nombre=nombre.replaceAll(cEspArray[i].split(":")[0],cEspArray[i].split(":")[1]);
		return jdbcJuegos.selectByName(nombre);
	}
	
	public Juego getJuegoUid(String uid){
		return jdbcJuegos.selectByJID(uid);
	}
	
}